const AES = require('crypto-js');
const key = AES.enc.Utf8.parse('0123456789ASDFGH'); //十六位十六进制数作为密钥
const iv = AES.enc.Utf8.parse('ASDFGH0123456789'); //十六位十六进制数作为密钥偏移量
import { cloneDeep, isEmpty, forEach, find } from 'lodash';
// 加密
export function encrypt(word) {
  const src = AES.enc.Utf8.parse(word);
  const encrypted = AES.AES.encrypt(src, key, {
    iv,
    mode: AES.mode.CBC,
    padding: AES.pad.Pkcs7,
  });
  return encrypted.ciphertext.toString().toUpperCase();
}

// 解密
export function decrypt(word) {
  const encryptedHexStr = AES.enc.Hex.parse(word);
  const src = AES.enc.Base64.stringify(encryptedHexStr);
  const decrypt = AES.AES.decrypt(src, key, {
    iv,
    mode: AES.mode.CBC,
    padding: AES.pad.Pkcs7,
  });
  const decryptedStr = decrypt.toString(AES.enc.Utf8);
  return decryptedStr.toString();
}

/**
 * 用户登陆
 */

export const doLogin = () => {
  window.location.href = `http://localhost:8191/login`;
};

export function fetchTree(data) {
  let treeData = new Array();
  forEach(data, (item) => {
    if (item.departParentId) {
      let parent = JSON.parse(item.departParentId);
      //先在treeData中找父级。
      setChildren(treeData, parent, item);
    } else {
      treeData.push({
        ...item,
        key: item._id,
        title: item.departName,
        value: item._id,
        children: [],
      });
    }
  });
  return treeData;
}

/**
 * 放入Children中的数据
 * @param {*} treeData 放入的集合
 * @param {*} parent 该父节点。
 * @param {*} item 当前节点。
 */
function setChildren(treeData, parent, item) {
  forEach(treeData, (tree) => {
    if (tree._id === parent.id) {
      //是当前上级节点。设置children节点。
      tree.children.push({
        ...item,
        key: item._id,
        title: item.departName,
        value: item._id,
        children: [],
      });
    } else {
      //该节点没有找到。在子节点继续找。
      setChildren(tree.children, parent, item);
    }
  });
}
